Основные задачи¶
Первичная установка системы¶
Установка TCS в производственном окружении производится с использованием инсталлятора Ansible Tarantool Enterprise (ATE).
Примечание
В тестовом окружении также возможна установка TCS без использования ATE.
Возможны 2 вида установки системы TCS с использованием ATE:
Установка с помощью Ansible-коллекции.
См. подробнее:
Раздел Подготовка серверов в текущем Руководстве администратора
Глава Использование Ansible-коллекции в документации по инсталлятору Ansible Tarantool Enterprise
Установка с помощью Docker-образа.
В этом случае установка TCS должна включать следующие шаги:
Подготовка серверов, в том числе установка и настройка кластера
etcd.См. подробнее:
Раздел Подготовка серверов в текущем Руководстве администратора
Раздел Сценарий первичной настройки в документации по инсталлятору Ansible Tarantool Enterprise
Загрузка конфигурации в
etcd.См. подробнее:
Пример вызова плейбука etcd_3_0.yml для отправки конфигурации в etcd
Раздел Tarantool 3.x: Отправка конфигурации в etcd в документации по инсталлятору Ansible Tarantool Enterprise.
Установка TCS.
См. подробнее:
Пример вызова плейбука tcs/install.yml для развертывания кластера
Раздел Tarantool Column Store: Установка приложения в документации по инсталлятору Ansible Tarantool Enterprise.
Установка TCM.
См. раздел Tarantool Cluster Manager: Установка и запуск в документации по инсталлятору Ansible Tarantool Enterprise.
Пример кластера TCS, развернутого на нескольких серверах:

Обновление версии системы¶
Внимание
Версия 1.0.2 несовместима с версией 1.1.0. Перед установкой версии 1.1.0 требуется очистить базу данных.
Чтобы обновить TCS 1.0.2 до версии 1.1.0, нужно выполнить следующие действия:
Убедиться, что в файле инвентаря TCS соблюдается формула для значений параметров
lease_interval>probe_interval+renew_interval. При необходимости изменений – загрузить обновленную конфигурацию вetcd.Остановить все экземпляры Storage 1.0.2 и полностью очистить среду (в ATE плейбук uninstall.yml).
Развернуть все экземпляры Storage 1.1.0. (в ATE плейбук tcs/install.yml).
С помощью SQL-запросов загрузить схему данных и сами данные.
Откат системы к предыдущей версии¶
Внимание
Версия 1.0.2 несовместима с версией 1.1.0. Перед установкой версии 1.0.2 требуется очистить базу данных.
Чтобы откатить TCS 1.1.0. обратно к версии 1.0.2, нужно выполнить следующие действия:
Остановить все экземпляры Storage 1.1.0 и полностью очистить среду (в ATE плейбук uninstall.yml).
При откате кластера, работавшего в режиме шардирования, выполнить также команду
etcdctl del --prefix "/tarantool/{prefix}/sharding", где{prefix}– это префикс для конфигурации TCS вetcd.Развернуть все экземпляры Storage 1.0.2 (в ATE плейбук tcs/install.yml).
С помощью SQL-запросов загрузить схему данных и сами данные.
Обновление системы без простоя¶
Внимание
Данная процедура применима только в режиме проксирования. Номера обех версий TCS должны быть не меньше 1.1.0.
Чтобы обновить TCS без простоя («по плечам»), нужно выполнить следующие действия:
Загрузить обновленную конфигурацию для новой версии TCS в
etcd.Запустить обновление по плечам (в ATE плейбук continuous_update.yml).
Откат системы без простоя¶
Внимание
Данная процедура применима только в режиме проксирования. Номера обех версий TCS должны быть не меньше 1.1.0.
Чтобы откатить TCS к более младшей версии без простоя («по плечам»), нужно выполнить следующие действия:
Загрузить конфигурацию для старой версии TCS в
etcd.В плейбуке ATE
continuous_update.ymlуказать целевую версию (старую).Запустить откат системы по плечам (в ATE плейбук continuous_update.yml).
Создание резервной копии¶
Процедура создания резервной копии находится в проработке.
Восстановление из резервной копии¶
Процедура восстановления из резервной копии находится в проработке.
Масштабирование системы¶
Добавление экземпляров Scheduler¶
Добавление новых экземпляров Scheduler может понадобиться, когда системе не хватает пропускной способности для маршрутизации или мощности для SQL-вычислений.
Важно
Добавление новых экземпляров возможно только в шардированном режиме работы кластера.
Для добавления нового экземпляра Scheduler с помощью инсталлятора Ansible Tarantool Enterprise:
Добавьте экземпляры Scheduler в инвентарь TCS.
Запустите плейбук
tcs/install.yml, указав в переменнойtarantool_shared_hostsсписок имен экземпляров, которые нужно установить и запустить. При необходимости задайте параметрlimit.См. Пример вызова плейбука tcs/install.yml для добавления экземпляра.
(Обязательно!) Перезагрузите конфигурацию кластера в etcd, чтобы восстановить конфигурацию запущенных ранее экземпляров Scheduler и Storage.
Добавление экземпляров Storage¶
Производится аналогично добавлению экземпляров Scheduler.
Добавление экземпляров Coordinator¶
Производится аналогично добавлению экземпляров Scheduler, но без обязательной перезагрузки конфигурации в etcd.
Настройка шардирования¶
Управление кластером¶
Управление кластером с помощью ATE¶
Инсталлятор Ansible Tarantool Enterprise предоставляет следующие сценарии по управлению кластером (см. соответствующие разделы в документации по инсталлятору Ansible Tarantool Enterprise):
Управление кластером с помощью TCM¶
Tarantool Cluster Manager – это административная панель для настройки и отслеживания кластеров, а также управления ими. Основные задачи, доступные через веб-интерфейс TCM:
Создание/остановка кластера и изменение его конфигурации:
Переключение лидера в наборах реплик;
Изменение некоторых других настроек кластера, с простоем и в runtime;
Исключение экземпляра из кластера.
Управление пользователями и ролями в кластере:
Управление пользователями Tarantool;
Изменение паролей пользователей Tarantool Enterprise.
Контролируемое аварийное переключение узлов кластера;
Восстановление и пересоздание экземпляров;
Проверка работоспособности кластера;
Просмотр журналов аудита.
См. документацию по Tarantool Cluster Manager.
Удаление системы¶
Запустите плейбук
uninstall.yml, указав следующие параметры:tagsи значениеtarantoollimitи список имен всех экземпляров кластера
См. Пример вызова плейбука uninstall.yml для удаления кластера.
При удалении кластера, работавшего в режиме шардирования, выполните также команду
etcdctl del --prefix "/tarantool/{prefix}/sharding", где{prefix}– это префикс для конфигурации TCS вetcd.
См. подробнее раздел Удаление кластера Tarantool в документации по инсталлятору Ansible Tarantool Enterprise.
Привязка экземпляра Tarantool к NUMA-зоне¶
Чтобы привязать экземпляры Tarantool к узлам NUMA, нужно отредактировать
конфигурационные файлы сервисов SystemD.
Полная инструкция¶
Зайдите на сервер TCS с экземплярами Storage по SSH.
Переключитесь на пользователя
tarantool:sudo su tarantool
Установите переменную окружения для работы с
SystemDвuserspace:export XDG_RUNTIME_DIR=/run/user/$(id -u)
Объяснение: Это нужно для выполнения команд утилит
SystemD (systemctl, journalctl)вuserspace.Рекомендация: Чтобы не выполнять экспорт каждый раз, можно добавить команду
export XDG_RUNTIME_DIR=/run/user/$(id -u)в файл$HOME/.profile.Посмотрите список сервисов пользователя
tarantool:systemctl --user list-units --type=service
Пример вывода:
tarantool@tcs-testing-1:~$ systemctl --user list-units --type=service UNIT LOAD ACTIVE SUB DESCRIPTION tarantool-cluster-manager.service loaded active running Tarantool Cluster Manager tcs-scheduler@scheduler-01.service loaded active running Tarantool Column Store scheduler API service ● tcs@i-01.service loaded failed failed Tarantool application tcs@i-01 #сервис инстанса стораджа
В примере выше:
tcs@i-01.service– полное название сервиса для экземпляра с именемi-01;tcs– название приложения Tarantool.
В директории
$HOME/.config/systemd/userнаходятся:Шаблонный сервис для всех экзепляров
tcs@.service;Символическая ссылка на шаблонный сервис
tcs@i-01.service.
Откройте шаблонный сервис для экземпляров Storage:
vim $HOME/.config/systemd/user/tcs@.service
В шаблонном сервисе посмотрите путь до исполняемого файла
tarantool:[Service] Type=simple ExecStart="/app/tarantool/tcs/bin/tcs.%i/tarantool --name %i" # запоминаем этот путь Restart=on-failure RestartSec=2
Объяснение:
При автоматическом развертывании TCS исполняемые файлы размещаются в разных местах в зависимости от:
указанных в настройках путей для размещения файлов;
названия приложения (app_name);
других параметров конфигурации.
Вместо того чтобы пытаться угадать правильный путь к исполняемому файлу Tarantool при настройке службы (в параметре
ExecStart), лучше сразу посмотреть точное расположение файла в конфигурационном файле службыvim ~/.config/systemd/user/tcs@.service.Выполните команду
systemctl --user edit название_сервиса_storageдля того, чтобы начать редактирование (во временном буфере) файла с перезаписью опций в шаблонном сервисе:systemctl --user edit tcs@i-01
Добавьте перезапись опции
ExecStartиз секции[Service]. В новомExecStartуказан запуск процесса через утилитуnumactlс нужными опциями:[Service] ExecStart= ExecStart=numactl --cpunodebind=0 --membind=0 /app/tarantool/tcs/bin/tcs.%i/tarantool --name %i
ВАЖНО: обязательно нужно указать сначала пустой
ExecStart, чтобы в дальнейшем не возникло ошибки при применении новой конфигурации.Сохраните файл.
Объяснение: Это действие создаст директорию
$HOME/.config/systemd/user/название_сервиса.dи файлoverride.confв этой директории.Рекомендация: Чтобы в качестве редактора использовался
vim(если он уже не используется по умолчанию), можно установить переменную окруженияSYSTEMD_EDITOR=vim.Выполните команду для перезагрузки конфигурации
systemD:
systemctl --user daemon-reload
Перезапустите экземпляр:
systemctl --user restart tcs@i-01
Примечание: Перезапустить экземпляр можно также через ATE.
После перезапуска можно проверить привязку к NUMA-зоне, найдя ее в файле
/proc/${PID}/numa_maps.
Краткая инструкция¶
# Зайти под пользователем tarantool:
sudo su tarantool
# Установить переменную для работы с SystemD в userspace:
export XDG_RUNTIME_DIR=/run/user/$(id -u)
# Посмотреть, какие есть сервисы:
systemctl --user list-units --type=service
# Запустить редактирование интересующего сервиса:
systemctl --user edit название_интересующего_сервиса
# Добавить в файл:
[Service]
ExecStart=
ExecStart=numactl --cpunodebind=0 --membind=0 /app/tarantool/tcs/bin/tcs.%i/tarantool --name %i
# Перезагрузить конфигурацию systemD:
systemctl --user daemon-reload
# Перезапустить экземпляр
systemctl --user restart название_сервиса
Настройка IP-адресов узлов в кластере TCS¶
Для определения IP-адреса узла в кластере TCS используются следующие параметры:
протокол Tarantool iproto:
(Обязательно) iproto.listen.uri – для входящих запросов (общего назначения).
iproto.advertise.client – для взаимодействия с клиентами.
Пример:
iproto: listen: - uri: 0.0.0.0:3331 advertise: client: 127.0.0.0:3331
протокол HTTP:
(Обязательно) http.listen – для входящих запросов (общего назначения).
http.advertise.client – для взаимодействия с клиентами.
http.advertise.sharding.uri – для взаимодействия между экземплярами Scheduler и Storage.
Пример:
roles_cfg: tcs_roles/storage: http: listen: 0.0.0.0:7777 advertise: client: 127.0.0.1:7777 sharding: uri: 127.0.0.1:7777
протокол Apache Arrow Flight:
(Обязательно) arrow_flight_sql.listen – для входящих запросов (общего назначения).
arrow_flight_sql.advertise.client – для взаимодействия с клиентами.
arrow_flight_sql.advertise.sharding.uri– для взаимодействия между экземплярами Scheduler и Storage.
Пример:
roles_cfg: tcs_roles/storage: arrow_flight_sql: listen: 0.0.0.0:50051 advertise: client: 127.0.0.1:50051 sharding: uri: 127.0.0.1:50051
Эти настройки нужны в любом режиме работы кластера.
Проверка топологии и номера ревизии конфигурации¶
С помощью следующего SQL-запроса к экземпляру Scheduler можно получить информацию о топологии и номерах ревизии конфигурации на всех экземплярах Storage в кластере TCS:
SELECT * FROM tcs_routing_map()
Для каждого экземпляра Storage в кластере возвращается:
имя набора реплик (поле
shard_name);имя экземпляра (поле
instance_name);активен ли данный экземпляр (поле
is_enabled);режим чтения/записи экземпляра (поле
mode);номер последней примененной ревизии конфигурации (поле
meta_revision).
Информация об экземплярах Scheduler и Coordinator не предоставляется.
SQL-запрос можно делать к любому экземпляру Scheduler в кластере.
Пример ответа:
{
"shard_name": "storages-replicaset1",
"instance_name": "storage2",
"is_enabled": true,
"mode": "RO",
"meta_revision": 0
},
{
"shard_name": "storages-replicaset1",
"instance_name": "storage1",
"is_enabled": true,
"mode": "RW",
"meta_revision": 0
}
Установка системы в тестовой среде¶
Установка TCS в тестовой среде может производиться как с использованием инсталлятора Ansible Tarantool Enterprise (аналогично установке в производственной среде, так и вручную. Ниже приведены инструкции по ручной установке.
В пакет поставки TCS включены следующие файлы конфигурации:
Файл конфигурации
config.ymlописывает конфигурацию для кластера TCS (набор реплик из 2 экземпляров).Файл конфигурации
instances.ymlуказывает, какие именно экземпляры должны быть запущены на текущем хосте.
Возможны 2 вида установки кластера TCS:
Также кластер TCS можно разворачивать как на одном сервере (по умолчанию), так и на нескольких серверах.
Установка кластера с локальным файлом конфигурации¶
Распаковать архив с поставкой версии TCS 1.0 и перейти в распакованную директорию.
Убедиться, что в файле
instances.ymlуказаны те экземпляры, которые нужно развернуть на текущем сервере.Запустить команду
./tt start, чтобы развернуть кластер.Запустить команду
./tt statusдля проверки того, что кластер поднят.
Пример результата успешной установки:
/tt start
• Starting an instance [tarantool_column_store: instance1]...
• Starting an instance [tarantool_column_store: instance2]...
/tt status
INSTANCE STATUS PID MODE CONFIG BOX UPSTREAM
tarantool_column_store: instance1 RUNNING 319481 RW ready running --
tarantool column store: instance2 RUNNING 319482 RO ready running --
Установка кластера с файлом конфигурации в etcd¶
Распаковать архив с поставкой версии TCS 1.0 и перейти в распакованную директорию.
В файле
config.ymlпрописать, откуда вetcdбрать конфигурацию.Например:
config: etcd: prefix: /tcs endpoints: - http://localhost:2379 http: request: timeout: 1
Загрузить файл конфигурации в
etcd.Например:
mv config.yml remote.yml ./tt cluster publish http://localhost:2379/tcs remote.yml
Убедиться, что в файле
instances.ymlуказаны те экземпляры, которые нужно развернуть на текущем сервере.Запустить команду
./tt start, чтобы развернуть кластер.Запустить команду
./tt statusдля проверки того, что кластер поднят.
Установка кластера на нескольких серверах¶
На каждом сервере нужно выполнить установку нужного типа (с локальным файлом конфигурации
или хранящимся в etcd). При этом:
Файлы конфигурации TCS на серверах должны совпадать и содержать настройки для всех экземпляров TCS на всех серверах.
В файле
instances.ymlдля каждого сервера нужно указать те экземпляры TCS, которые нужно развернуть на данном сервере.
Например:
instances.ymlна сервере А:instance1: instance2:
instances.ymlна сервере B:instance3: instance4:
Остановка кластера в тестовой среде¶
Выполните команду
./tt stop -yдля остановки кластера.(Необязательно) Выполните команду
./tt cleanдля зачистки журналов и данных.
Обновление системы в тестовой среде¶
Остановить старый кластер, чтобы он не помешал поднять новую версию, если экземпляры старой и новой версии привязаны к одинаковым портам на одном сервере. Журналы и данные можно не очищать.
Установить новую версию системы, не забыв обновить файл конфигурации.